當刪除動作被觸發時,會呼叫 deleteMessage(_:at:)
函數,這個函數會彈出一個警告視窗讓使用者確認是否要刪除訊息。若使用者確定刪除,則會將該訊息從 Realm 資料庫中刪除,並更新表格。
// deleteMessage 是用來處理刪除訊息的動作
func deleteMessage(_ message: MessageBoard, at indexPath: IndexPath) {
// 彈出一個警告視窗,詢問使用者是否確認刪除
let alertController = UIAlertController(title: "刪除", message: "確定刪除嗎", preferredStyle: .alert)
// 定義一個確定刪除的動作
let deleteAction = UIAlertAction(title: "確定", style: .default) {
[weak self] _ in
// 初始化 Realm 資料庫
let realm = try! Realm()
// 在 Realm 中寫入變更,刪除該訊息
try! realm.write {
realm.delete(message)
}
// 從資料源中移除該訊息,並更新表格
self?.messageArray.remove(at: indexPath.row)
self?.tbvTest.deleteRows(at: [indexPath], with: .fade)
}
// 定義一個取消動作,取消操作不做任何變更
let cancelAction = UIAlertAction(title: "取消", style: .cancel,
handler: nil)
// 將確定和取消的動作加入到警告視窗中
alertController.addAction(deleteAction)
alertController.addAction(cancelAction)
// 顯示警告視窗
present(alertController, animated: true, completion: nil)
}
透過 UIAlertController
我們提供了簡單的確認對話框,並利用 Realm 進行資料的刪除。刪除成功後,我們也要同步從資料源 (messageArray
) 中移除該訊息,並透過 tableView.deleteRows
方法將表格中的對應列動畫性地移除。
今天教完左滑刪除的功能!下一篇和下下篇會教右滑編輯